package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import Entita.Categoria;
import Entita.Contesto;
import Entita.Diagnosi;
import Entita.Interpretazione;
import Entita.Paziente;
import Entita.Tavola;
import Entita.TavolaPaziente;
import Exceptions.DuplicateNameException;
import GUI.Main;


public class PazienteDAO
{

	Connection con=null;
	PreparedStatement ptmt=null;
	ResultSet rs=null;

	public PazienteDAO()
	{

	}

	private Connection getConnection() throws SQLException
	{
		Connection conn;
		conn=ConnectionFactory.getInstance().getConnection();
		return conn;
	}


	public static Paziente newPaziente(String titolo,Categoria categoria) throws DuplicateNameException{
		Connection con=null;
		ResultSet rs=null;
		PreparedStatement stm=null;
		PreparedStatement ins=null;
			
		try{

			String scalarString="SELECT * from PAZIENTE WHERE Titolo=?";
			con=ConnectionFactory.getInstance().getConnection();
			stm=con.prepareStatement(scalarString);
			stm.setString(1, titolo);
			stm.executeQuery();
			rs=stm.executeQuery();
			if(rs.next()){
				throw new DuplicateNameException();
			}
			if(rs!=null)
				rs.close();
			if(stm!=null)
				stm.close();
			if(con!=null)
				con.close();
			
			
			scalarString="SELECT max(ID_Paziente)+1 as newID from PAZIENTE";
			con=ConnectionFactory.getInstance().getConnection();
			stm=con.prepareStatement(scalarString);
			stm.executeQuery();
			rs=stm.executeQuery();
			if(rs.next())
			{
				
				Paziente paziente= new Paziente();
				paziente.setID(rs.getInt("newID"));
				rs.close();
				con.close();
				con=ConnectionFactory.getInstance().getConnection();
				paziente.setTitolo(titolo);
				PazienteDAO pazienteDAO=new PazienteDAO();
				pazienteDAO.add(paziente);
				String query="INSERT INTO CategoriaPaziente (ID_Categoria,ID_Paziente) VALUES (?,?)";
				ins=con.prepareStatement(query);
				ins.setInt(1, categoria.getId());
				ins.setInt(2, paziente.getID());
				ins.executeUpdate();
				con.close();
				ins.close();
				DiagnosiDAO.newDiagnosi(paziente, "Intelligenza");
				for (int i=1;i<=10;i++){
					TavolaPaziente tavolaPaziente=new TavolaPaziente(paziente, Tavola.createTavola(i));
				}					

				return paziente;
			}else{
				return null;
			}
			
		}catch(DuplicateNameException e){
			throw e;
		}catch(Exception e){
			return null;
		}finally{
			try
			{
				if(rs!=null)
					rs.close();
				if(ins!=null)
					ins.close();
				if(stm!=null)
					stm.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}
		
	}
	
	public void add(Paziente paziente)
	{

		try
		{
			String querystring="INSERT INTO Paziente (ID_Paziente, Titolo, Nome, Cognome, LuogoNascita, DataNascita, Sesso, TitoloStudio, " +
					"Professione, IndirizzoVia, IndirizzoCap, IndirizzoCitta, IndirizzoProvincia, IndirizzoStato, LuogoEsame, DataEsame)" +
					"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, paziente.getID());
			ptmt.setString(2, paziente.getTitolo());
			ptmt.setString(3, paziente.getNome());
			ptmt.setString(4, paziente.getCognome());
			ptmt.setString(5, paziente.getLuogoNascita());
			ptmt.setDate(6, paziente.getDataNascita());
			ptmt.setString(7, paziente.getSesso());
			ptmt.setString(8, paziente.getTitoloStudio());
			ptmt.setString(9, paziente.getProfessione());
			ptmt.setString(10, paziente.getIndirizzoVia());
			ptmt.setString(11, paziente.getIndirizzoCAP());
			ptmt.setString(12, paziente.getIndirizzoCitta());
			ptmt.setString(13, paziente.getIndirizzoProvincia());
			ptmt.setString(14, paziente.getIndirizzoStato());
			ptmt.setString(15, paziente.getLuogoEsame());
			ptmt.setDate(16, paziente.getDataEsame());
			ptmt.executeUpdate();

		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}

	}
	
	public void  update(Paziente paziente)
	{

		try
		{
			String querystring="UPDATE Paziente SET Titolo=?, Nome=?, Cognome=?, LuogoNascita=?, DataNascita=?, Sesso=?, TitoloStudio=?, " +
					"Professione=?, IndirizzoVia=?, IndirizzoCap=?, IndirizzoCitta=?, IndirizzoProvincia=?, IndirizzoStato=?, LuogoEsame=?, DataEsame=?, " +
					"Pinacoteca1=?, Pinacoteca2=?, Pinacoteca3=?, Pinacoteca4=?, Pinacoteca5=?, Pinacoteca6=?, Pinacoteca7=?, Pinacoteca8=?, Pinacoteca9=?, " +
					"Pinacoteca10=?, tavolaSimpatica=?, tavolaSimpaticaPerche=?, tavolaAntipatica=?, tavolaAntipaticaPerche=?, SeriazionePositiva=?," + 
					"SeriazioneNegativa=?, ColorePiuGradito=?, ColoreMenoGradito=?, ProvaBandiera=?, TavolaPreferita=?, Telefono=?, Email=?, Esaminatore=?," +
					"Contesto=?, Atteggiamento=?, TempoRaccolta=?, TempoTotale=?, AltriTest=?, Luce=?, SerieTavole=?, AltriCasi=?, Integrazione=?, Metodo=?, Inviante=?" + 
					"WHERE ID_Paziente=?";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);

			ptmt=con.prepareStatement(querystring);
			ptmt.setString(1, paziente.getTitolo());
			ptmt.setString(2, paziente.getNome());
			ptmt.setString(3, paziente.getCognome());
			ptmt.setString(4, paziente.getLuogoNascita());
			ptmt.setDate(5, paziente.getDataNascita());
			ptmt.setString(6, paziente.getSesso());
			ptmt.setString(7, paziente.getTitoloStudio());
			ptmt.setString(8, paziente.getProfessione());
			ptmt.setString(9, paziente.getIndirizzoVia());
			ptmt.setString(10, paziente.getIndirizzoCAP());
			ptmt.setString(11, paziente.getIndirizzoCitta());
			ptmt.setString(12, paziente.getIndirizzoProvincia());
			ptmt.setString(13, paziente.getIndirizzoStato());
			ptmt.setString(14, paziente.getLuogoEsame());
			ptmt.setDate(15, paziente.getDataEsame());
			ptmt.setString(16, paziente.getPinacoteca1());
			ptmt.setString(17, paziente.getPinacoteca2());
			ptmt.setString(18, paziente.getPinacoteca3());
			ptmt.setString(19, paziente.getPinacoteca4());
			ptmt.setString(20, paziente.getPinacoteca5());
			ptmt.setString(21, paziente.getPinacoteca6());
			ptmt.setString(22, paziente.getPinacoteca7());
			ptmt.setString(23, paziente.getPinacoteca8());
			ptmt.setString(24, paziente.getPinacoteca9());
			ptmt.setString(25, paziente.getPinacoteca10());
			ptmt.setString(26, paziente.getTavolaSimpatica());
			ptmt.setString(27, paziente.getTavolaSimpaticaPerche());
			ptmt.setString(28, paziente.getTavolaAntipatica());
			ptmt.setString(29, paziente.getTavolaAntipaticaPerche());
			ptmt.setString(30, paziente.getSeriazionePositiva());
			ptmt.setString(31, paziente.getSeriazioneNegativa());
			ptmt.setString(32, paziente.getColorePiuGradito());
			ptmt.setString(33, paziente.getColoreMenoGradito());
			ptmt.setString(34, paziente.getProvaBandiera());
			ptmt.setString(35, paziente.getTavolaPreferita());
			ptmt.setString(36, paziente.getNumeroTelefono());
			ptmt.setString(37, paziente.getEmail());
			ptmt.setString(38, paziente.getEsaminatore());
			ptmt.setString(39, paziente.getContesto());
			ptmt.setString(40, paziente.getAtteggiamento());
			ptmt.setString(41, paziente.getTempoRaccolta());
			ptmt.setString(42, paziente.getTempoTotale());
			ptmt.setString(43, paziente.getAltriTest());
			ptmt.setString(44, paziente.getLuce());
			ptmt.setString(45, paziente.getSerieTavole());
			ptmt.setString(46, paziente.getAltriCasi());
			ptmt.setString(47, paziente.getIntegrazione());
			ptmt.setString(48, paziente.getMetodo());
			ptmt.setString(49, paziente.getInviante());
			ptmt.setInt(50, paziente.getID());
			ptmt.executeUpdate();

		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}

	}

	public void delete(int IDPaziente)
	{

		try
		{
			String querystring="DELETE FROM Paziente WHERE ID_Paziente=?";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, IDPaziente);
			ptmt.executeUpdate();
			ptmt.close();
			querystring="DELETE FROM CategoriaPaziente WHERE ID_Paziente=?";
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, IDPaziente);
			ptmt.executeUpdate();
			querystring="DELETE FROM Diagnosi WHERE ID_Paziente=?";
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, IDPaziente);
			ptmt.executeUpdate();

		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}

	}

	public List<Paziente> findAll()
	{
		List<Paziente> pazienti=new ArrayList<Paziente>();
		try
		{
			String querystring="SELECT * FROM Paziente";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			rs=ptmt.executeQuery();
			while(rs.next())
			{
				Paziente paziente=new Paziente();
				paziente.setID(rs.getInt("ID_Paziente"));
				paziente.setTitolo(rs.getString("Titolo"));
				paziente.setNome(rs.getString("Nome"));
				paziente.setCognome(rs.getString("Cognome"));
				paziente.setLuogoNascita(rs.getString("LuogoNascita"));
				paziente.setDataNascita(rs.getDate("DataNascita"));
				paziente.setSesso(rs.getString("Sesso"));
				paziente.setTitoloStudio(rs.getString("TitoloStudio"));
				paziente.setProfessione(rs.getString("Professione"));
				paziente.setIndirizzoVia(rs.getString("IndirizzoVia"));
				paziente.setIndirizzoCAP(rs.getString("IndirizzoCAP"));
				paziente.setIndirizzoCitta(rs.getString("IndirizzoCitta"));
				paziente.setIndirizzoProvincia(rs.getString("IndirizzoProvincia"));
				paziente.setIndirizzoStato(rs.getString("IndirizzoStato"));
				paziente.setLuogoEsame(rs.getString("LuogoEsame"));
				paziente.setDataEsame(rs.getDate("DataEsame"));
				paziente.setNumeroTelefono(rs.getString("Telefono"));
				paziente.setEmail(rs.getString("Email"));
				paziente.setEsaminatore(rs.getString("Esaminatore"));
				paziente.setContesto(rs.getString("Contesto"));
				paziente.setAtteggiamento(rs.getString("Atteggiamento"));
				paziente.setTempoRaccolta(rs.getString("TempoRaccolta"));
				paziente.setTempoTotale(rs.getString("TempoTotale"));
				paziente.setAltriTest(rs.getString("AltriTest"));
				paziente.setLuce(rs.getString("Luce"));
				paziente.setSerieTavole(rs.getString("SerieTavole"));
				paziente.setAltriCasi(rs.getString("AltriCasi"));
				paziente.setIntegrazione(rs.getString("Integrazione"));
				paziente.setMetodo(rs.getString("Metodo"));
				paziente.setInviante(rs.getString("Inviante"));
				paziente.setPinacoteca1(rs.getString("Pinacoteca1"));
				paziente.setPinacoteca2(rs.getString("Pinacoteca2"));
				paziente.setPinacoteca3(rs.getString("Pinacoteca3"));
				paziente.setPinacoteca4(rs.getString("Pinacoteca4"));
				paziente.setPinacoteca5(rs.getString("Pinacoteca5"));
				paziente.setPinacoteca6(rs.getString("Pinacoteca6"));
				paziente.setPinacoteca7(rs.getString("Pinacoteca7"));
				paziente.setPinacoteca8(rs.getString("Pinacoteca8"));
				paziente.setPinacoteca9(rs.getString("Pinacoteca9"));
				paziente.setPinacoteca10(rs.getString("Pinacoteca10"));
				paziente.setTavolaSimpatica(rs.getString("TavolaSimpatica"));
				paziente.setTavolaSimpaticaPerche(rs.getString("TavolaSimpaticaPerche"));
				paziente.setTavolaAntipatica(rs.getString("TavolaAntipatica"));
				paziente.setTavolaAntipaticaPerche(rs.getString("TavolaAntipaticaPerche"));
				paziente.setTavolaPreferita(rs.getString("TavolaPreferita"));
				paziente.setSeriazionePositiva(rs.getString("SeriazionePositiva"));
				paziente.setSeriazioneNegativa(rs.getString("SeriazioneNegativa"));
				paziente.setColorePiuGradito(rs.getString("ColorePiuGradito"));
				paziente.setColoreMenoGradito(rs.getString("ColoreMenoGradito"));
				paziente.setProvaBandiera(rs.getString("ProvaBandiera"));
				
				
				pazienti.add(paziente);
			}
		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}
		return pazienti;
	}
	
	public List<Categoria> getCategorieAssociate(Paziente paziente,Contesto contesto)
	{
		List<Categoria> categorie=new ArrayList<Categoria>();
		try
		{
			String querystring=	"SELECT Ca.*,C.ID_Contesto FROM Categoria Ca, categoriaPaziente cp , ContestoCategoria CC, " +
								"	Contesto C "+
								"WHERE "+
								"	CC.ID_Categoria=Ca.ID_Categoria and " +
								"	CC.ID_Contesto=C.ID_Contesto and " +
								"	cp.ID_Paziente=? AND"+
								"	C.ID_Contesto=? AND"+
								"	cp.ID_Categoria=Ca.ID_Categoria "+
								"ORDER BY c.Nome ASC";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, paziente.getID());
			ptmt.setInt(2, contesto.getId());
			rs=ptmt.executeQuery();
			while(rs.next())
			{
				Categoria categoria=new Categoria(rs.getInt("ID_Categoria"),rs.getString("Nome"),rs.getInt("Ordine"),contesto);
				categorie.add(categoria);
			}
		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		catch(Exception e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}
		return categorie;
	}

	public List<Categoria> getCategorieDissociate(Paziente paziente)
	{
		List<Categoria> categorie=new ArrayList<Categoria>();
		try
		{
			String querystring=	"SELECT Ca.*, C.ID_Contesto FROM Categoria Ca, "+
								"	ContestoCategoria CC, " +
								"	Contesto C " +
								"WHERE" +
								" CC.ID_Categoria=Ca.ID_Categoria and " +
								" CC.ID_Contesto=C.ID_Contesto and " +
								" Ca.ID_Categoria "+
								"NOT IN ("+
								" SELECT Ca.ID_Categoria "+
								"FROM Categoria Ca, categoriaPaziente cp "+
								"WHERE "+
								" cp.ID_Paziente=? AND"+
								" cp.ID_Categoria=Ca.ID_Categoria)"+
								"ORDER BY c.Nome ASC";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, paziente.getID());
			rs=ptmt.executeQuery();
			while(rs.next())
			{
				Contesto contesto=new ContestoDAO().findByPrimaryKey(rs.getInt("ID_Contesto"));
				Categoria categoria=new Categoria(rs.getInt("ID_Categoria"),rs.getString("Nome"),rs.getInt("Ordine"),contesto);
				categorie.add(categoria);
			}
		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		catch(Exception e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}
		return categorie;
	}

	

	
	public Paziente findByPrimaryKey(int IDPaziente) throws Exception
	{

		Paziente paziente=null;
		try
		{
			String querystring="SELECT * FROM Paziente WHERE ID_Paziente=?";
			con=getConnection();
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, IDPaziente);
			rs=ptmt.executeQuery();
			if(rs.next())
			{
				paziente=new Paziente();
				paziente.setID(rs.getInt("ID_Paziente"));
				paziente.setTitolo(rs.getString("Titolo"));
				paziente.setNome(rs.getString("Nome"));
				paziente.setCognome(rs.getString("Cognome"));
				paziente.setLuogoNascita(rs.getString("LuogoNascita"));
				paziente.setDataNascita(rs.getDate("DataNascita"));
				paziente.setSesso(rs.getString("Sesso"));
				paziente.setTitoloStudio(rs.getString("TitoloStudio"));
				paziente.setProfessione(rs.getString("Professione"));
				paziente.setIndirizzoVia(rs.getString("IndirizzoVia"));
				paziente.setIndirizzoCAP(rs.getString("IndirizzoCAP"));
				paziente.setIndirizzoCitta(rs.getString("IndirizzoCitta"));
				paziente.setIndirizzoProvincia(rs.getString("IndirizzoProvincia"));
				paziente.setIndirizzoStato(rs.getString("IndirizzoStato"));
				paziente.setLuogoEsame(rs.getString("LuogoEsame"));
				paziente.setDataEsame(rs.getDate("DataEsame"));
				paziente.setNumeroTelefono(rs.getString("Telefono"));
				paziente.setEmail(rs.getString("Email"));
				paziente.setEsaminatore(rs.getString("Esaminatore"));
				paziente.setContesto(rs.getString("Contesto"));
				paziente.setAtteggiamento(rs.getString("Atteggiamento"));
				paziente.setTempoRaccolta(rs.getString("TempoRaccolta"));
				paziente.setTempoTotale(rs.getString("TempoTotale"));
				paziente.setAltriTest(rs.getString("AltriTest"));
				paziente.setLuce(rs.getString("Luce"));
				paziente.setSerieTavole(rs.getString("SerieTavole"));
				paziente.setAltriCasi(rs.getString("AltriCasi"));
				paziente.setIntegrazione(rs.getString("Integrazione"));
				paziente.setMetodo(rs.getString("Metodo"));
				paziente.setInviante(rs.getString("Inviante"));
				paziente.setPinacoteca1(rs.getString("Pinacoteca1"));
				paziente.setPinacoteca2(rs.getString("Pinacoteca2"));
				paziente.setPinacoteca3(rs.getString("Pinacoteca3"));
				paziente.setPinacoteca4(rs.getString("Pinacoteca4"));
				paziente.setPinacoteca5(rs.getString("Pinacoteca5"));
				paziente.setPinacoteca6(rs.getString("Pinacoteca6"));
				paziente.setPinacoteca7(rs.getString("Pinacoteca7"));
				paziente.setPinacoteca8(rs.getString("Pinacoteca8"));
				paziente.setPinacoteca9(rs.getString("Pinacoteca9"));
				paziente.setPinacoteca10(rs.getString("Pinacoteca10"));
				paziente.setTavolaSimpatica(rs.getString("TavolaSimpatica"));
				paziente.setTavolaSimpaticaPerche(rs.getString("TavolaSimpaticaPerche"));
				paziente.setTavolaAntipatica(rs.getString("TavolaAntipatica"));
				paziente.setTavolaAntipaticaPerche(rs.getString("TavolaAntipaticaPerche"));
				paziente.setTavolaPreferita(rs.getString("TavolaPreferita"));
				paziente.setSeriazionePositiva(rs.getString("SeriazionePositiva"));
				paziente.setSeriazioneNegativa(rs.getString("SeriazioneNegativa"));
				paziente.setColorePiuGradito(rs.getString("ColorePiuGradito"));
				paziente.setColoreMenoGradito(rs.getString("ColoreMenoGradito"));
				paziente.setProvaBandiera(rs.getString("ProvaBandiera"));
			}
		}
		catch(SQLException e)
		{
			throw new SQLException(e);
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				throw new SQLException(e);
			}
			catch(Exception e)
			{
				throw new Exception(e);
			}

		}

		return paziente;
	}
	
	public void saveInterpretazioni(int IDPaziente, int IDTest, ArrayList<Interpretazione> interpretazioni){
		
		try
		{
			String querystring="DELETE FROM Interpretazione WHERE ID_Paziente=?";
			con=getConnection();
			//con.setAutoCommit(false);
			ptmt=con.prepareStatement(querystring);
			ptmt.setInt(1, IDPaziente);
			ptmt.addBatch();
			ptmt.executeBatch();
		}
		catch(SQLException e)
		{
			Main.showError("Errore:"+e.getMessage());
		}
		finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(ptmt!=null)
					ptmt.close();
				if(con!=null)
					con.close();
			}
			catch(SQLException e)
			{
				Main.showError("Errore:"+e.getMessage());
			}
			catch(Exception e)
			{
				Main.showError("Errore:"+e.getMessage());
			}

		}
		
		
		for (Interpretazione interpretazione:interpretazioni){
			InterpretazioneDAO dao= new InterpretazioneDAO();
			dao.saveInterpretazione(interpretazione, IDPaziente, interpretazione.getTavola().getID());
		}
	}
}